Tópico movido para dúvidas / pedidos resolvidos.
info
Grupo: Conde
Registrado: 07/04/15
Posts: 926
Reputação: +335
Gênero: Masculino

info
Grupo: Conde
Registrado: 07/04/15
Posts: 926
Reputação: +335
Gênero: Masculino

Por distração, eu acabei me esquecendo que vc queria 3 talkactions. Por isso, aqui está o script final com as 3 talkactions:
*lembrando que ñ tenho como testar, e estou me baseando no q me foi dito sobre o tfs 1.2:
local pointObj = 2160 --id do item "points"
function getAccountPoints(player)
local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getGuid()..'')
if(res:getID() == -1) then
return false
end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end
function onSay(player, words, param)
if (words == '!sacar') then
if param ~= "" then
if tonumber(param) ~= nil then
if 0 >= tonumber(param) then
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser acima de zero.")
elseif tonumber(param) <= player:getAccountPoints() then
player:addItem(pointObj, param)
db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() - param..' WHERE id='.. player:getGuid()..'')
newPoints = player:getAccountPoints()
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.')
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.")
end
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser um numero.")
end
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.")
end
elseif (words == '!saldo') then
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..player:getAccountPoints()..' Premium points.')
elseif (words == '!depositar') then
if param ~= "" then
if tonumber(param) ~= nil then
if 0 >= tonumber(param) then
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser acima de zero.")
elseif tonumber(param) <= player:getItemCount(pointObj) then
player:removeItem(pointObj, tonumber(param))
db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() + tonumber(param)..' WHERE id='.. player:getGuid()..'')
newPoints = player:getAccountPoints()
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.')
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.")
end
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser um numero.")
end
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.")
end
end
return true
end
Basta usar uma só tag em talkactions.xml apenas se atente a isso na tag:
words="!sacar;!saldo;!depositar"
Editado Janeiro 30 por Danihcv
bugs corrigidos
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

Por distração, eu acabei me esquecendo que vc queria 3 talkactions. Por isso, aqui está o script final com as 3 talkactions:
*lembrando que ñ tenho como testar, e estou me baseando no q me foi dito sobre o tfs 1.2:
local pointObj = 2160 --id do item "points" function getAccountPoints(player) local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getGuid()..'') if(res:getID() == -1) then return false end local ret = res:getDataInt("premium_points") res:free() return tonumber(ret) end function onSay(player, words, param) if (words == '!sacar') then if param ~= "" then if tonumber(param) <= player:getAccountPoints() then player:addItem(pointObj, param) db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() - param..' WHERE id='.. player:getGuid()..'') newPoints = player:getAccountPoints() player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.') else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.") end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.") end elseif (words == '!saldo') then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..player:getAccountPoints()..' Premium points.') elseif (words == '!depositar') then if param ~= "" then if tonumber(param) <= player:getItemCount(pointObj) then player:removeItem(pointObj, tonumber(param)) db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() + tonumber(param)..' WHERE id='.. player:getGuid()..'') newPoints = player:getAccountPoints() player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.') else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.") end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.") end end return true endBasta usar uma só tag em talkactions.xml apenas se atente a isso na tag:
Eu fiz Dani, por isso que não pedi as outras... obrigado irmão te amo de novo hahaha <3
info
Grupo: Conde
Registrado: 07/04/15
Posts: 926
Reputação: +335
Gênero: Masculino

info
Grupo: Visconde
Registrado: 16/08/13
Posts: 286
Reputação: +30
Gênero: Masculino

Olá amigo boua tarde pequei esse seu script fiz tudo certinho na hora que fui olhar o saldo ai deu esse erro
Usei o comando "!saldo"
[22/02/2016 13:10:13] [Error - TalkAction Interface] [22/02/2016 13:10:13] data/talkactions/scripts/buypoints.lua:onSay [22/02/2016 13:10:13] Description: [22/02/2016 13:10:13] data/talkactions/scripts/buypoints.lua:34: attempt to index local 'player' (a number value) [22/02/2016 13:10:13] stack traceback: [22/02/2016 13:10:13] data/talkactions/scripts/buypoints.lua:34: in function <data/talkactions/scripts/buypoints.lua:13>
Usei o comando "!sacar 10"
[22/02/2016 13:14:28] [Error - TalkAction Interface] [22/02/2016 13:14:28] data/talkactions/scripts/buypoints.lua:onSay [22/02/2016 13:14:28] Description: [22/02/2016 13:14:28] data/talkactions/scripts/buypoints.lua:19: attempt to index local 'player' (a number value) [22/02/2016 13:14:28] stack traceback: [22/02/2016 13:14:28] data/talkactions/scripts/buypoints.lua:19: in function <data/talkactions/scripts/buypoints.lua:13>
Usei o comando "!depositar 10"
[22/02/2016 13:17:53] [Error - TalkAction Interface] [22/02/2016 13:17:53] data/talkactions/scripts/buypoints.lua:onSay [22/02/2016 13:17:53] Description: [22/02/2016 13:17:53] data/talkactions/scripts/buypoints.lua:40: attempt to index local 'player' (a number value) [22/02/2016 13:17:53] stack traceback: [22/02/2016 13:17:54] data/talkactions/scripts/buypoints.lua:40: in function <data/talkactions/scripts/buypoints.lua:13>
Obs: a tag em talkactions.xml ficou assim
<!-- Retirar points do site para o jogo --> <talkaction words="!sacar;!saldo;!depositar" event="script" value="buypoints.lua"/>

tá ai a imagem lá no phpmyadmin
Obs: uso site
Editado Fevereiro 22 por Eduzinhonho
info
Grupo: Conde
Registrado: 07/04/15
Posts: 926
Reputação: +335
Gênero: Masculino

@@Eduzinhonho, qual distro vc usa?
info
Grupo: Visconde
Registrado: 16/08/13
Posts: 286
Reputação: +30
Gênero: Masculino

info
Grupo: Conde
Registrado: 07/04/15
Posts: 926
Reputação: +335
Gênero: Masculino

@@Eduzinhonho, putz cara... Não manjo dessa distro... Mas pode ser que o script dessa forma aqui funcione pra vc:
local pointObj = 2160 --id do item "points"
function getAccountPoints(cid)
local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..getPlayerAccountId(cid)..'')
if(res:getID() == -1) then
return false
end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end
function onSay(cid, words, param)
if (words == '!sacar') then
if param ~= "" then
if tonumber(param) ~= nil then
if 0 >= tonumber(param) then
doPlayerSendCancel(cid, "O valor precisa ser acima de zero.")
elseif 0 < tonumber(param) and tonumber(param) <= getAccountPoints(cid) then
doPlayerAddItem(cid, pointObj, tonumber(param))
db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) - tonumber(param)..' WHERE id='.. getPlayerAccountId(cid)..'')
newPoints = getAccountPoints(cid)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.')
else
doPlayerSendCancel(cid, "Você não tem tantos premium points assim.")
end
else
doPlayerSendCancel(cid, "O valor precisa ser um numero.")
end
else
doPlayerSendCancel(cid, "Você precisa especificar um valor.")
end
elseif (words == '!saldo') then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..getAccountPoints(cid)..' Premium points.')
elseif (words == '!depositar') then
if param ~= "" then
if tonumber(param) ~= nil then
if 0 >= tonumber(param) then
doPlayerSendCancel(cid, "O valor precisa ser acima de zero.")
elseif 0 < tonumber(param) and tonumber(param) <= getPlayerItemCount(cid, pointObj) then
doPlayerRemoveItem(cid, pointObj, tonumber(param))
db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) + tonumber(param)..' WHERE id='.. getPlayerAccountId(cid)..'')
newPoints = getAccountPoints(cid)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.')
else
doPlayerSendCancel(cid, "Você não tem tantos premium points assim.")
end
else
doPlayerSendCancel(cid, "O valor precisa ser um numero.")
end
else
doPlayerSendCancel(cid, "Você precisa especificar um valor.")
end
end
return true
end
info
Grupo: Visconde
Registrado: 16/08/13
Posts: 286
Reputação: +30
Gênero: Masculino

@@Eduzinhonho, putz cara... Não manjo dessa distro... Mas pode ser que o script dessa forma aqui funcione pra vc:
local pointObj = 2160 --id do item "points" function getAccountPoints(cid) local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..getPlayerAccountId(cid)..'') if(res:getID() == -1) then return false end local ret = res:getDataInt("premium_points") res:free() return tonumber(ret) end function onSay(cid, words, param) if (words == '!sacar') then if param ~= "" then if tonumber(param) ~= nil then if 0 >= tonumber(param) then doPlayerSendCancel(cid, "O valor precisa ser acima de zero.") elseif 0 < tonumber(param) and tonumber(param) <= getAccountPoints(cid) then doPlayerAddItem(cid, pointObj, tonumber(param)) db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) - tonumber(param)..' WHERE id='.. getPlayerAccountId(cid)..'') newPoints = getAccountPoints(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.') else doPlayerSendCancel(cid, "Você não tem tantos premium points assim.") end else doPlayerSendCancel(cid, "O valor precisa ser um numero.") end else doPlayerSendCancel(cid, "Você precisa especificar um valor.") end elseif (words == '!saldo') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..getAccountPoints(cid)..' Premium points.') elseif (words == '!depositar') then if param ~= "" then if tonumber(param) ~= nil then if 0 >= tonumber(param) then doPlayerSendCancel(cid, "O valor precisa ser acima de zero.") elseif 0 < tonumber(param) and tonumber(param) <= getPlayerItemCount(cid, pointObj) then doPlayerRemoveItem(cid, pointObj, tonumber(param)) db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) + tonumber(param)..' WHERE id='.. getPlayerAccountId(cid)..'') newPoints = getAccountPoints(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.') else doPlayerSendCancel(cid, "Você não tem tantos premium points assim.") end else doPlayerSendCancel(cid, "O valor precisa ser um numero.") end else doPlayerSendCancel(cid, "Você precisa especificar um valor.") end end return true end
Fucionou sim cara muito obrigado funcionou bastante certo PARABÈNS

se poder min ajudar visita esse outro post que eu fiz lá eu estou com outro problema sobre um script da bike só ler os comentarios que você fica informado e talvez até min ajudará se poder
Muito obrigado por ter ajudado nesse problema
info
Grupo: Conde
Registrado: 07/04/15
Posts: 926
Reputação: +335
Gênero: Masculino

@@Eduzinhonho, disponha. ^^
Se eu souber o que fazer, eu respondo lá. sahuahusa
info
Grupo: Visconde
Registrado: 16/08/13
Posts: 286
Reputação: +30
Gênero: Masculino

Tranquilo muito obrigado da uma olhada lá no ultimo post que eu atualizei ele está mais fácil de entender e Obrigado.


info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea
Mesmo erro que acabei de postar acima Dani. 'RS', se sua tentativas estão dando erro imagina as minhas. 'RSRS'
Vlw Dani, quem estava fazendo errado era eu... Desculpa e muito obrigado mesmo. Te amo <3 HAHA